home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / PLUS4 / plus4disk2.d64 / ch4.01 chng < prev    next >
Text File  |  2009-01-03  |  11KB  |  111 lines

  1. Ç*NB"1:CH4.01  CHNG"            "1:CHX INTRO"   "1:CHX.XX"
  2. Ç*SP0:LM8:RM62:PP66:PG59
  3. Ç*VP3:HL8:HR72:HD0:├16/+4: ├╚┴╬╟┼ ╠┼╘╘┼╥╙              ,,╙ECTION XX
  4. Ç*HS2:------------------------------------,,----------
  5. Ç*FT0:-----------------------,,----------
  6. Ç*FS3:(C) 1984 ┼LIZABETH ─EAL,,         Ç#
  7. ╙ECTION
  8. Ç*LN2:CN1;├╚┴╬╟╔╬╟ ╦┼┘┬╧┴╥─ ├╚┴╥┴├╘┼╥╙Ç*LN2:CN0
  9.      ╔T IS POSSIBLE TO CHANGE THE APPEARANCE OF THE CHARACTERS WE SEE ON THE KEYTOPS. ╔F YOU NEED A BOX, WHICH THE KEYBOARD DOESN'T HAVE, YOU CAN TELL THE COMPUTER TO REDESIGN ANY CHARACTER TO BE AN EMPTY SQUARE WITH DOTS ON ALL SIDES. ╨ERHAPS YOU NEED A WAVY LINE, OR A TRADEMARK SYMBOL ... NO PROBLEM.
  10.  
  11.      ╫ELL, A LITTLE BIT OF A PROBLEM: WHILE CHANGING CHARACTERS IS PURE SIMPLICITY, IT CAN GET MESSY. ╔F YOU DO WRONG THINGS THIS IS ONE OF FEW INSTANCES WHEN THE COMPUTER GETS BACK AT YOU. ╫E ALL DESERVE IT. ╚OW OFTEN HAVE YOU SAID "YOU STUPID MACHINE" IN THE LAST WEEK?
  12.  
  13.      ╙O, THIS SECTION WILL GET A BIT TECHNICAL TO EXPLAIN WHAT'S HAPPENING. ╔T WILL SHOW YOU PREVENTION AND A CURE. ┘OU DON'T HAVE TO DIG INTO ALL THIS INFORMATION RIGHT AWAY. ╔F YOU CAN TYPE THE FOLLOWING PROGRAM WITH NO ERRORS, YOU'LL BE ╧╦. ╧THERWISE THE MATERIAL IN THIS SECTION SHOULD HELP YOU UNDERSTAND SOME OF THE STRANGE THINGS YOU MAY ENCOUNTER NOW OR IN THE FUTURE. ╔NCIDENTALLY, NOTHING CAN HURT THE COMPUTER, SO DO NOT WORRY. ╘HE WARNINGS ARE FOR YOUR BENEFIT TO SAVE YOU SOME TIME. ╟O AHEAD AND PLAY WITH THE LETTERS EVEN IF YOU DO NOT UNDERSTAND EVERYTHING TODAY. ┘OU CAN ALWAYS COME BACK TO THIS SECTION AT A LATER DATE FOR SOME RELEARNING IF YOU NEED IT.
  14.  
  15.      ╞OR NON-BEGINNERS THIS SECTION HAS A SMALL INTRODUCTION TO MEMORY MANAGEMENT AND ERROR TRAPPING.
  16.  
  17. // PRG: NEW CHAR //
  18.  
  19. Ç*FP9
  20. ***  ╓┴╥╔┴┬╠┼╙  ***
  21.  
  22. ┴─   LOCATION OF MOVED CHARACTER SET
  23. ┴┴   LOCATION OF REDEFINED CHARACTERS
  24. ╩    COUNTS 8 BYTES OF CHARACTER MATRIX
  25. ╦    COUNTS 8 BITS OF EACH BYTE
  26. ╨()  TABLE OF 8 POWERS OF 2
  27. ╓    WORKING VALUES
  28. ╔$   KEYBOARD ENTRY
  29.  
  30. ***  ╔╬╙╘╥╒├╘╔╧╬╙  ***
  31.  
  32.      ╙EVERAL LINES IN THIS PROGRAM HAVE TO BE TYPED LETTER-PERFECT. ╘HE MOST IMPORTANT ONES ARE LINES 150 AND 200. ┬EFORE YOU ╥╒╬ THIS ROUTINE, PROOFREAD IT WELL AND ╙┴╓┼ IT IF YOU WISH. ╘HEN FOLLOW THIS LITTLE PROCEDURE EXACTLY. ╔T WILL SEEM ODD, BUT IT IS THE EASIEST WAY TO MOVE CHARACTERS FROM ONE PLACE TO ANOTHER IN COMPUTER'S MEMORY, A MOVE WE MUST MAKE SOMEHOW OR OTHER.
  33.  
  34.      ╘YPE ═╧╬╔╘╧╥ AND PUSH ╥┼╘╒╥╬. ┘OU'LL SEE ALL SORTS OF GIBBERISH ON THE SCREEN. ╔GNORE IT. ╫HERE THE CURSOR IS FLASHING, TYPE THE FOLLOWING LINE, MAKING SURE YOU HAVE EXACTLY ONE SPACE BETWEEN GROUPS OF LETTERS AND NUMBERS:
  35.  
  36. ╘ ─000 ─7╞╞ 3000
  37.  
  38.      AND PUSH ╥┼╘╒╥╬. ╘YPE LETTER ╪ AND PUSH ╥┼╘╒╥╬ TO GET BACK TO ┬┴╙╔├. ╘HE JOB'S DONE. ╫E HAVEN'T HOOKED UP THE CHARACTERS YET, BUT THEY ARE NOW AVAILABLE TO US FOR ANY MODIFICATIONS WE MAY WISH TO MAKE.
  39.  
  40.      ╬OW YOU CAN ╥╒╬ THE PROGRAM. ┘OU WILL SEE A CHANGE IN CHARACTERS. ┘OU CAN PRESS ANY KEY TO RESTORE THINGS BACK TO NORMAL. ╘HIS BREAKS THE HOOK, BUT THE CHARACTERS CAN BE USED AGAIN WHEN NEDDED.
  41.  
  42. ***  ─┼╘┴╔╠╙  ***
  43.  
  44.      ╫E REDEFINE ONLY TWO KEYS: THE % CHARACTER, ON TOP OF NUMBER 5, AND THE AMPERSAND CHARACTER WHICH IS THE ONE ON TOP OF NUMBER 6. ╨ERCENT WILL BE MADE INTO A ├OMMODORE-LOGO SHAPE, AS DRAWN IN THE ─┴╘┴ LINES. ╘HE AMPERSAND WILL BECOME TWO THIN, VERTICAL LINES AS YOU SEE ON YOUR ├OMMODORE COMPUTER.
  45.  
  46.      ╘HE AMPERSAND CHARACTER IS NOT SHOWN IN THE ─┴╘┴ LINES. ╬O POINT, IT IS A FAIRLY SIMPLE PATTERN, ALL EIGHT ROWS OF THE CHARACTER GET THE SAME VALUE, SO WE JUST PUT THAT VALUE (DECIMAL 102 OR HEXADECIMAL $66) INTO THE COMPUTER'S NEW CHARACTER MEMORY.
  47.  
  48.      ╘HE TRANSLATION OF EACH OF THE EIGHT LINES OF THE NEW CHARACTER IS DONE IN LINE 230. ╘HIS IS AN ALL-PURPOSE SUBROUTINE. ┘OU CAN CALL IT AGAIN AND AGAIN, THE MAGIC WORD BEING ╟╧╙╒┬ LINE NUMBER.
  49.  
  50.      ╘HESE CHARACTERS ARE ACTIVE UNTIL YOU PRESS ANY KEY (LINE 190), AT WHICH POINT WE RESET THINGS BACK TO NORMAL. ╔F YOU WISH YOU CAN PUT A ╥┼═ ON LINE 200 FOR THE CHARACTERS TO STAY PUT FOR A WHILE, SO THAT YOU CAN EXPERIMENT WITH THEM, BUT BE CAREFUL, WE NEED THIS LINE MOST OF THE TIME.
  51.  
  52.      ╫HY? ╫HEN WE USE DEFINED CHARACTERS AND WHEN YOU GET ANY KIND OF AN ERROR, THE SCREEN FILLS WITH A FAIR AMOUNT OF FLOATING GARBAGE. ─O NOT PANIC: BLINDLY TYPE "╟╧╘╧200" AND PRESS ╥┼╘╒╥╬. ╘HIS WILL SET THINGS BACK TO NORMAL. ┴LTERNATELY, WHILE HOLDING THE ╙╘╧╨ KEY FIRMLY DOWN, PRESS THE TINY LITTLE RESET BUTTON ON THE SIDE, TYPE ╪ AND ╥┼╘╒╥╬. ┘OUR PROGRAM SHOULD BE INTACT, IT SHOULD ╠╔╙╘ AND ╥╒╬ PROPERLY.
  53.  
  54.  
  55. ***  ╨╥╧╩┼├╘╙  ***
  56.  
  57.      ╔F YOU WISH YOU CAN CHANGE THE ─┴╘┴ LINES TO LOOK DIFFERENTLY. ╟O AHEAD, MAKE A BOX, OR WHATEVER YOU WISH. ╩UST MAKE SURE THAT YOU HAVE 8 DATA LINES, EIGHT CHARACTERS ACROSS TO TELL THE COMPUTER THE RIGHT AMOUNT OF STUFF.
  58.  
  59.      ┘OU CAN ADD MORE CHARACTERS OF THE ├OMMODORE-LOGO TYPE. ┴DD EIGHT DATA LINES. ┘OU CAN USE ANY LETTER TO DO THE DESIGNING, YOU DON'T HAVE TO TYPE STARS, AS THE "DECODER" IN LINE 230 LOOKS ONLY AT NON-SPACE CHARACTERS.
  60.  
  61.      ╠IST LINE 160, BY SAYING ╠╔╙╘ 160. ─UPLICATE LINE 160 BY OVERTYPING 161 RIGHT OVER 160. ╨USH ╥┼╘╒╥╬. ┘OU NOW HAVE TWO IDENTICAL PROGRAM LINES. ┴LL WE HAVE TO CHANGE IS THE TARGET CHARACTER. ╔F YOU WISH TO REDEFINE THE # KEY, WHICH IS SHIFTED 3, TYPE 35 OVER THE 37 YOU NOW SEE IN LINE 161. ╫HERE DID WE GET 35? ╘HAT'S SCREEN CODE FOR THE # CHARACTER. ╚OW DO WE KNOW THE SCREEN CODE? ╠OOK UP IN THE INDEX OF THE MANUAL, OR PRINT # IN THE FIRST SCREEN POSITION, AND UNDERNEATH TYPE:
  62.  
  63. ╨╥╔╬╘ ╨┼┼╦(12*256)
  64.  
  65.      ╘HE FORMULA IN LINE 160, TELLS THE COMPUTER TO PUT NEW CHARACTER VALUES AT THE BEGINNING OF OUR NEW CHARACTER MEMORY, WHICH WE PLACED AT HEX $3000 OR DECIMAL 3*4096=12288 + THE CHARACTER OFFSET. ╙INCE EACH CHARACTER TAKES UP EIGHT BYTES, TO GET THE OFFSET, WE MULTIPLY THE SCREEN CODE BY 8 AND ZERO IN SMACK ON THE CHARACTER WE WANT.
  66.  
  67.      ╘HE CHARACTER NUMBER HAS TO BE ANY NUMBER FROM 0 TO 127. ─ON'T TRY USING NUMBERS LARGER THAN 127 (REVERSE CHARACTERS), IT WON'T WORK, TRY IT.
  68.  
  69.      ╘O SWITCH FROM ITS NORMAL CHARACTER SET TO OURS WE MUST POKE CERTAIN PLACES IN ITS MEMORY. ╘HIS IS DONE IN LINE 150. ├ONVERSLY, TO DISCONNECT, WE RESTORE THE COMPUTER'S NORMAL VALUES IN LINE 200.
  70.  
  71. ***  ╨┼┼╦ ╙╘┴╘┼═┼╬╘  ***
  72.  
  73.      ╨┼┼╦ AND ╨╧╦┼ ARE RELATIVES. ┘OU HAVE SEEN ╨╧╦┼ ALREADY. ╔T PLACES A VALUE IN COMPUTER'S SPECIFIC MEMORY LOCATION. ╞OR ╨╧╦┼ TO TAKE HOLD, THE MEMORY MUST BE "READ AND WRITE" MEMORY, NOT READ-ONLY, AS ╥╧═. ╙CREEN MEMORY IS A GOOD EXAMPLE OF "WRITE" AND "READ" TYPE OF MEMORY. ╙O IS THE MEMORY WHERE YOUR ┬┴╙╔├ PROGRAMS ARE HELD. ┘OU CAN CHANGE THE MEMORY AND YOU CAN LOOK AT IT. ┘OU CAN NORMALLY ╨┼┼╦ (LOOK AT) BOTH KINDS OF MEMORY. ╚OWEVER, THIS COMPUTER IS A FAIRLY COMLICATED BEAST, AND ONE OF THE PRICES WE PAY IS THAT WE CANNOT EASILY ╨┼┼╦ THE READ-ONLY-MEMORY, OR ╥╧═. ╘HIS WAS ONE OF THE REASONS WHY WE USED THE ═╧╬╔╘╧╥ TO ╨┼┼╦ OUT THE CHARACTERS IN ONE PLACE TO ╨╧╦┼ THEM INTO ANOTHER PLACE. ╘HE OTHER REASON IS SPEED, IF YOU MUST KNOW.
  74.  
  75.      ╔F YOU HAVE TO ╨┼┼╦ THE ╥╧═, HERE IS A LITTLE TRICK. ╙UPPOSE YOU WANT TO ╨┼┼╦ THE FIRST BYTE OF THE ╥╧═ AREA THAT BEGINS AT 32768 OR $8000 IN HEXADECIMAL. ╘HIS IS ONE WAY TO DO THE JOB:
  76.  
  77. ╨╧╦┼ 1176,44:╓=╨┼┼╦(32768):╨╧╦┼ 1176,141
  78.  
  79.      ├AN YOU PEEK MORE THAN ONE LOCATION? ┘ES. ┘OU CAN PLACE ALL SORTS OF STATEMENTS BETWEEN THE TWO ╨╧╦┼S, SO LONG AS THEY ─╧ ╬╧╘ ╔╬╓╧╠╓┼ ┴╬┘ ├╚┴╥┴├╘┼╥ ╙╘╥╔╬╟╙. ╞URTHER DETAILS ARE BEYOND THE SCOPE OF THIS BOOK, BUT THIS HINT IS INCLUDED AS IT IS QUITE USEFUL AND OFTEN NECESSARY.
  80.  
  81. ***  ═┼═╧╥┘ ═┴╬┴╟┼═┼╬╘  ***
  82.  
  83.      ┴S ┬┴╙╔├ DOES IT'S JOB OF ╥╒╬NING OUR PROGRAM IT USES VARIOUS AREAS OF MEMORY FOR STORAGE. ╫E PUT OUR CHARACTERS PRECISELY IN THE SPOT WHICH ┬┴╙╔├ WANTS TO USE. ╙O WE'RE FIGHTING FOR THE SAME SPACE. ╬ORMALLY, A COMPUTER WINS SUCH BATTLES WITH RATHER UNPLEASANT CONSEQUENCES FOR US.
  84.  
  85.      ╘O AVOID THE CONFLICT WE TELL ┬┴╙╔├ TO STAY OUT OF OUR AREA. ╫E TELL IT TO LIMIT ITS WORKSPACE TO A SMALLER AREA. ╫E DO SO IN LINE 130. ╘HERE IS A SET OF ADDRESSES IN THE COMPUTER WHICH ARE USED FOR MEMORY MANAGEMENT. ╠OCATIONS 55 AND 56 ARE TH ONES WE USE, THEY ARE CALLED "TOP-OF-MEMORY POINTER". ┬Y POKING AN EQUIVALENT OF HEX $3000, DECIMAL 12280 WE EFFECTIVELY LIMITS ┬┴╙╔├ TO AN AREA BETWEEN THE PROGRAM START, HEX $1000 OR DEDIMAL 4096 AND THE TOP AT HEX $3000. ╫E PERFORM ├╠╥, WHICH CLEARS ALL THE VARIABLES (SO IT HAS TO BE DONE FIRST!) TO ALIGN OTHER POINTERS CORRECTLY.
  86.  
  87.      ╔F AT ANY TIME YOU WISH TO PERFORM A SIMILAR OPERATION, BUT CAN'T AFFORD TO DO ├╠╥, THIS IS A VIABLE ALTERNATIVE:
  88.  
  89.      ╨╧╦┼ 55,╠: ╨╧╦┼ 56,╚: ╨╧╦┼ 51,╠: ╨╧╦┼ 52,╚
  90.  
  91.      ╘HE ╠ AND ╚ REFER TO ╠OW AND ╚IGH PAIR OF BYTES. ╘HEY ARE CALCULATED AS FOLLOWS:
  92.  
  93. Ç*FP3
  94. ╓=SOME ADDRESS VALUE, SUCH AS 12280
  95. ╚=╔╬╘(╓/256)
  96. ╠=╓-256*╚
  97.  
  98.      ╫HY TWO BYTES FOR ONE ADDRESS? ╘HE COMPUTER CAN ONLY HANDLE NUMBERS UP TO 255 IN EACH OF ITS MEMORY LOCATIONS. ┬Y USING PAIRS WE CAN ACCOMODATE ANY NUMBER UP TO 65565. ╘HE HIGH BYTE HAS A WEIGHT OF 256. ╫HEN YOU MULTIPLY ╚IGH BY  256 AND ADD TO IT THE ╠OW VALUE, YOU'LL GET BACK YOUR ORIGINAL BIG VALUE. ╘RY IT.
  99.  
  100. ***  ┼╥╥╧╥ ╘╥┴╨╨╔╬╟  ***
  101.  
  102.      ┴N ERROR ON OUR PART NORMALLY WOULD CAUSE AN ERROR MESSAGE TO BE NEATLY PRINTED ON THE SCREEN. ┬UT THIS IS DIFFERENT. ╫HEN THERE ARE ERRORS, THE COMPUTER GETS THOROUGHLY CONFUSED AND PRESENTS YOU WITH A LIVE, JITTERY MESS ON THE SCREEN. ╫E CAN'T PREVENT ALL ERRORS, BUT WE CAN CATCH MOST: ╘╥┴╨200 IN LINE 140 SHOULD TRAP MANY TYPING MISTAKES. ╫HEN IT HAPPENS, INSTEAD OF BEING AT THE COMPUTER'S MERCY (I.E. TRASH ON THE SCREEN), WE GO TO LINE 200, WHICH RESTORES THE NORMAL ENVIRONMENT. ╔N LINE 210 WE PRINT OUR OWN ERROR MESSAGE. ╔T GETS PRECEEDED BY THE > CHARACTER.
  103.  
  104.      ╬EEDLESS TO SAY, IF LINE 200 IS MISTYPED, ALL THIS IS IN VEIN. ┘OU CAN'T TRAP A TRAP.
  105.  
  106.      ┼╥ IS ERROR NUMBER THAT THE COMPUTER DETECTED. ╔F ZERO, WE HAVE NO ERROR. ╔F -1, WE HAVE NO ERROR. ├AREFUL HERE, YOU MUST CODE ╔╞ ┼╥>0 TO BE ABLE TO PICK UP THE ENTIRE MESSAGE ┼╥╥$(┼╥). ╔T WON'T WORK WHEN YOU CODE ╔╞ ┼╥ ╘╚┼╬... ╙ORRY ABOUT IT. ╔T'S RATHER PECULIAR, ╔ ADMIT.
  107.  
  108.      ┘OU MAY WONDER WHY SO MUCH CODE CHASES SUCH A LITTLE TASK IN THIS SECTION. ╔T'S A FUNNY THING ABOUT COMPUTERS - SOMETIMES A TINY IDEA REQUIRES LESS CODE FOR THE IDEA ITSELF, THAN FOR ALL THE SETUP AND RECOVERY PROCEDURES. ╟ET USED TO IT. ╔T'S PART OF THE FUN OF DOING THINGS YOUR WAY.
  109.  
  110.      ╘HE NEXT SECTION WILL USE THE CHARACTERS WE HAVE DEFINED. ┼VEN THOUGH YOU'RE NOT SEEING THEM NOW, THEY ARE THERE. ╫E WILL JUST CALL ON THEM AGAIN. ╙O DO NOT RESET YOUR MACHINE. ╔F YOU HAVE PULLED THE PLUG, OR IF THIS IS ANOTHER DAY, JUST ╠╧┴─ AND ╥╒╬ THIS ROUTINE ONCE.
  111.